package com.example.teamwork.service;

import com.example.teamwork.informationGet.*;
import com.example.teamwork.pojo.Permission;
import com.example.teamwork.pojo.Role;
import com.example.teamwork.pojo.User;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface UserService {
    /**
     * 根据用户姓名获得用户
     *
     * */
    User getUserByname(String name);
    /**
     * 根据获得用户信息
     *
     * */
    UserInfoGet info();
    /**
     * 用户拥有的角色
     * */
    List<Role> getRolesByUserId(Long userId);
    /**
     * 用户登录
     * */
    String login( String name, String password);

    List<Permission> findPermissionsByRoles(List<Role> roles);
    /**
     * 加载菜单
     *
     * @return
     */
    List<PermissionNodeVO> findPermission();

    /**
     * 用户列表
     * @param userVO
     * @return
     */
    PageVO<UserVO> findUserList(Integer start, Integer limit, UserVO userVO);

    /**
     * 分配角色
     *
     * @param userId
     * @param rids
     */
    void assignRoles(Long userId, Long[] rids);

    List<Long> roles(Long userId);
    void deleteById(Long userId);
    void updateStatus(Long userId, Boolean userStatus);
    void add(UserVO userVO);
    void update(Long userId, UserEditVO userVO);
    UserEditVO edit(Long userId);

    void resetPassword(Long userId);

    void editAvater(String avater, Long userId);

    void editSelf(User user);

    void editPassword(String password, String newPassword);
}
